package ams

type IdpForCpu struct {
	//AssetTag string // eg：To Be Filled By O.E.M.,代表该处理器的资产标签。
	Description       string // eg:Intel64 Family 6 Model 158 Stepping 13 ,描述
	CurrentClockSpeed uint32 // eg:2901 ,-处理器的当前速度，以MHz为单位
	DataWidth         uint16 // eg :64 ,在32位处理器，该值是32，在64位处理器是64
	DeviceID          string // eg:cpu0,在系统上的处理器的唯一标识符
	//ExtClock                  uint32 // eg:100 , 外部时钟频率，以MHz为单位
	Family                    uint16 // eg:205 ,处理器系列类型
	L2CacheSize               uint32 // eg:1536 ,二级缓存大小,kb
	L3CacheSize               uint32 // eg:9216 ,三级缓存的大小,kb
	Manufacturer              string // eg:GenuineIntel,处理器的制造商
	MaxClockSpeed             uint32 // eg：2901，处理器的最大速度，以MHz为单位
	Name                      string // eg :Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz 处理器的名称
	NumberOfCores             uint32 // eg:6,芯为处理器的当前实例的数目。核心是在集成电路上的物理处理器
	NumberOfLogicalProcessors uint32 // eg:6  ,用于处理器的当前实例逻辑处理器的数量
	ProcessorId               string // eg:"BFEBFBFF000906ED",描述处理器功能的处理器的信息,CPUID
	SystemName                string // eg :"HCY",系统的名称
}

type IdpForMemory struct {
	Capacity    uint64 // eg:8589934592 ，获取内存容量, / 1024*1024*1024 才能换算成GB
	Description string // eg:物理内存 ，物理内存还虚拟内存
	//ConfiguredClockSpeed uint32 //eg；2133 (0x855) ，配置时钟速度
	//ConfiguredVoltage    uint32 // eg：1200 (0x4B0) ，配置电压
	DataWidth    uint16 // eg：64，获取内存数据带宽
	Manufacturer string // eg：859B，生产商
	//MaxVoltage uint32 // eg：1200 ，最大电压
	//MinVoltage uint32 // eg：1200 ，最小电压
	Model        string // eg：null ，型号 // 不清楚是我电脑的问题还是其他什么原因
	PartNumber   string // eg：CT8G4DFS8266.M8FE   ，零件编号,由生产商定义
	SerialNumber string // eg：2271E66A，编号
	SKU          string // eg：null，SKU号 // 不清楚是我电脑的问题还是其他什么原因
	Speed        uint32 // eg：2667，速率 内存频率 单位MHz
	Tag          string // eg：Physical Memory 0，唯一标识符的物理存储器
}

type IdpForDisk struct {
	BytesPerSector   uint32 // eg:512 ,在每个扇区的物理磁盘驱动器的字节数。
	Caption          string // eg:PCIe SSD ,对象的序列号
	Description      string // eg:磁盘驱动器 ,描述
	DeviceID         string // eg: \\.\PHYSICALDRIVE1 ,磁盘驱动器与系统中的其他设备的唯一标识符
	FirmwareRevision string // eg:E8FM11.6 ,修订制造商分配的磁盘驱动器固件。
	InterfaceType    string // eg:SCSI ,物理磁盘驱动器的类型 （IDE、sata）
	Manufacturer     string // eg:(标准磁盘驱动器) ,制造商名称
	MediaType        string // eg:Fixed hard disk media ,由该设备使用或访问的媒体类型。
	Model            string // eg；PCIe SSD ，磁盘驱动器的制造商的型号。
	Name             string // eg:\\.\PHYSICALDRIVE1 ,名字
	SerialNumber     string // eg:6479_A721_8068_6489. 由制造商分配的号来识别物理介质。
	Size             uint64 // eg:256052966400 ,磁盘大小 单位字节 / 1024*1024*1024 才能得到G，
	SystemName       string // eg：HCY ，系统名称
}

type IdpForLogicDisk struct {
	Caption            string //  eg:C: ,标题，也就是盘符
	Description        string // eg:本地固定磁盘 ,描述
	DeviceID           string // eg:C: , 在系统中的唯一标识符
	DriveType          uint32 // eg:3 , 磁盘类型，0-未知；1-No Root Directory；2-移动磁盘；3-本地磁盘；4-网络驱动器；5-光盘；6-RAM盘
	FileSystem         string // eg:NTFS , 磁盘格式
	FreeSpace          uint64 // eg:88191721472,空闲空间
	Size               string // eg:255369482240 ,总空间
	SupportsDiskQuotas bool   // 是否支持磁盘配额
	VolumeName         string // eg: 软件，逻辑卷别名
	VolumeSerialNumber string // eg:2AF1A3B8 ,逻辑卷序列号，并非磁盘序列号。
}
type IdpForMainBoard struct {
	Description          string // eg:基板 , 对象的描述（底板）
	HostingBoard         bool   // eg:TRUE,如果为TRUE，该卡是一个主板，或在一个机箱中的基板。
	HotSwappable         bool   // eg:FALSE,如果为TRUE，就是支持热插拔（判断是否支持热插拔）
	Manufacturer         string // eg:HASEE Computer,表示制造商的名称
	Model                string // eg:null ,物理元素的名称是已知。
	Name                 string // eg:基板 ,对象的名称标签
	OtherIdentifyingInfo string // eg:null ,捕获附加数据，超出资产标签的信息，可以用来标识物理元件
	Product              string // eg:H310CM, 产品的型号
	SerialNumber         string // eg:00000000 ，经过测试大品牌机器这个值都是有唯一值的，我的是杂牌电脑 .制造商分配的用于识别所述物理元件数目。
	Tag                  string // eg:Base Board,系统的基板唯一标识
	Version              string // eg:F1.0G,物理元素的版本
}
type IdpForSystem struct {
	DNSHostName               string // eg:hcy ,机器名
	Domain                    string // eg:WORKGROUP, 域
	Manufacturer              string // eg:HASEE Computer ,制造商
	Model                     string // eg:H310CM ,型号
	Name                      string // eg：hcy，名称
	NumberOfLogicalProcessors uint32 // eg:6, 逻辑处理器数量
	NumberOfProcessors        uint32 // eg:1 ,物理处理器数量
	PartOfDomain              bool   // eg:false, 计算机是否入域
	SystemType                string // eg；x64-based PC ，系统类型
	UserName                  string // eg:rock , 当前登陆的用户，注意，如果以服务形式启动，可能获取不到这个值。
}
type IdpForBootCommand struct {
	Caption     string // eg:Wechat , 标题，一般是程序名称
	Command     string // eg: F:\WeChat\WeChat.exe ,命令，一般是主程序执行文件所在的路劲
	Description string // eg:Wechat ,程序描述
	Location    string // eg:HKU\S-1-5-21-2779472476-3307822928-228716351-1001\SOFTWARE\Microsoft\Windows\CurrentVersion\Run , 启动命令在磁盘文件系统中的路径。
	Name        string // eg: Wechat ,名称
	User        string // eg: HCY\rock ,此启动命令将为其运行的用户名。
	UserSID     string // eg: S-1-5-21-2779472476-3307822928-228716351-1001 ,用户id
}

type IdpForService struct {
	AcceptPause bool   // eg: false ,是否可以暂停服务。
	AcceptStop  bool   // eg: false ,是否可以停止服务。
	Caption     string // eg: redis ,标题
	//DelayedAutoStart bool // eg:false, 如果为True，则该服务将在其他自动启动服务启动后启动，并伴有短时间的延迟。
	Description     string // eg: This service runs the Redis server ,服务描述
	DesktopInteract bool   // eg: false 指示服务是否可以创建或与桌面上的窗口通信。大多数服务都不是交互式的;也就是说，它们不以任何方式与用户通信。
	DisplayName     string // eg:redis, 显示名称
	Name            string // eg :redis ,服务器名称
	PathName        string // eg:F:\Redis\redis-server.exe --service-run "F:\Redis\redis.windows-service.conf"  , 服务路径和参数
	ProcessId       uint32 // eg:4304 ,服务的进程标识符。
	Started         bool   // eg: true, 指示服务是否启动。
	StartMode       string //eg: Auto ,服务的启动方式
	// ,Boot -操作系统加载程序启动的设备驱动程序(系统级驱动)；System-操作系统初始化过程启动的设备驱动程序；
	// Auto -系统启动时启动，此时用户还未登陆；Disabled- 除非StartMode更改为“自动”或“手动”，否则无法启动的服务。
	StartName string // eg:NT AUTHORITY\NETWORKSERVICE , 运行服务的帐户名称
	State     string // eg:Running ,基本服务的当前状态。
}

// IdpForActiveMac 活跃网卡信息
type IdpForActiveMac struct {
	Ip              string
	Mac             string
	Index           uint32 // 网卡在系统中的下标
	Name            string // 网卡名称
	Caption         string // eg:[00000003] Realtek PCIe GBE Family Controller ,设备的简短描述
	Manufacturer    string // eg:Realtek,制造商的名称
	NetConnectionID string // eg:以太网 ,网络连接的名称出现在网络连接控制面板程序
}
type IdpForNetWork struct {
	AdapterType     string // eg:以太网 802.3 ,适配器的类型
	AdapterTypeID   uint16 // eg:0  ,适配器的类型ID
	Caption         string // eg:[00000003] Realtek PCIe GBE Family Controller ,设备的简短描述
	MACAddress      string // eg:94:C6:91:C2:F5:50 ,MAC地址
	Manufacturer    string // eg:Realtek,制造商的名称
	NetConnectionID string // eg:以太网 ,网络连接的名称出现在网络连接控制面板程序
	NetEnabled      bool   // eg: true ,指明适配器是否已启用。如果为True，适配器已启用。您可以启用或通过启用和禁用方法禁用网卡。
	PhysicalAdapter bool   // eg:true , 指明适配器是否是物理或逻辑适配器。如果为True，适配器是物理
	PNPDeviceID     string // eg:PCI\VEN_10EC&DEV_8 ,即插即用逻辑设备的播放设备标识符,部分模拟网卡可做到以假乱真，通过这个标识可以判断区分
	Speed           uint64 // eg:1000000000 ,估计当前带宽比特每秒
	Index           uint32 // 网卡在系统中的下标
	Name            string // 网卡名称
}
